class TransportesController < ApplicationController  
  verify  :method => :post, 
          :only => [ :insertar, :actualizar ],
          :redirect_to => { :controller => 'portada', :action => 'ver' }
          
  before_filter :validar_admin, :only => [ :listar_admin, :nuevo, :insertar, :editar, :actualizar, :ordenar, :borrar ]
  before_filter :cargar_transporte, :only => [ :ficha, :editar, :actualizar, :borrar, :imposible_borrar ]
  
  def listar
    if es_admin?
      @transportes = Transporte.find( :all, :order => 'orden asc' )
    else
      @transportes = Transporte.find( :all, :order => 'orden asc', :conditions => "estado = '#{Transporte::ACTIVO}'"  )
    end
  end
  
  def listar_admin
      @transportes = Transporte.find( :all, :order => 'orden asc' )
  end
  
  def ordenar
    params["orden"].each_with_index do |id, index|
      transporte = Transporte.find_by_id( id );
      transporte.orden = (index+1) * 10
      transporte.save
    end
    
    flash[:info] = "El orden se ha actualizado correctamente"
    redirect_to admin_transportes_listar_url
  end
  
  def ficha
  end
  
  def nuevo
    @transporte = Transporte.new
    @transporte.estado = Transporte::ACTIVO
  end
  
  def insertar
    @transporte = Transporte.new( params[:transporte] )
    
    if @transporte.save
      flash[:info] = 'Tipo de transporte creado muy bien.'
      redirect_to transportes_ficha_url( @transporte.id )
    else
      flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      render :action => 'nuevo'
    end
  end
  
  def editar
  end
  
  def actualizar
    @transporte.update_attributes( params[:transporte] )
    
    if @transporte.save
      flash[:info] = 'Tipo de transporte actualizado muy bien.'
      redirect_to transportes_ficha_url( @transporte.id )
    else
      flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      render :action => 'editar'
    end    
  end
  
  def borrar    
    if( @transporte.usado_por_algun_pedido? )
      flash[:error] = "Este tipo de transporte no puede ser borrado porque está seleccionado en algún pedido."
      redirect_to admin_transportes_imposible_borrar_url( @transporte.id )
    else
    
      if @transporte.destroy
        flash[:info] = 'Tipo de transporte borrado muy bien.'
      else
        flash[:error] = 'Algún error se ha producido, vuelve a intentarlo.'
      end
      
      redirect_to admin_transportes_listar_url
      
    end
  end
  
  def imposible_borrar
  end
  
  protected
    def menu_activado
      # nada
    end
    
    def cargar_transporte
      if es_admin?
        @transporte = Transporte.find_by_id( params[:id] )
      else
        @transporte = Transporte.find_by_id( params[:id], :conditions => "estado = '#{Transporte::ACTIVO}'" )
      end
      
      if not @transporte
        render_404
      end
    end
end